This invention relates to object oriented programs of the type that create and interact with objects.
Most programming languages, such as C++, deal with objects (encapsulations of data structures and associated operation(s)) as in-memory data structures with some associated behavior. The ability to access such objects has been difficult in light of residency and memory management issues. For example, C++ is a language which is derived in part from C, and as such, it suffers from many of the same problems of memory management that C programs have. The use of pointers and, to a lesser extent references, contribute to an overall lack of robustness in many C++ applications.
A central issue is that of object ownership. If an object is referenced by another C++ object, either by pointer or reference, who owns the object? What happens if the object is deleted with references still outstanding? For example, FIG. 1A illustrates two object references A and B referencing an object 12. The object 12 may, for example, be a word processing document view, and the two references A and B two different screens of that word processing document view. Both object references "own" the object. Suppose, however, the object reference A is closed, causing the closure or destruction of the object 12 in order free up memory in the associated computing system. As illustrated in FIG. 1B, with the reference object A now gone, and with it the object 12, the object reference B references an invalid memory location, and any changes that may have been made by the objection reference B will most likely be lost.
Thus, there has been a need to provide a method of object access that addresses such issues.